package calculadorfpa.modelo;

import java.util.LinkedList;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;

/**
 * @author TECBMBKD
 * @version 1.0
 * @created 19-jun-2011 14:18:04
 */
public class Projeto extends AbstratoProjeto implements Cloneable {

    public List<Funcao> listaFuncoes;

    public Projeto() {
    }

    public void finalize() throws Throwable {
        super.finalize();
    }

    /**
     * Somar os valores de complexidade das fun��es da lista 'funcoes'.
     */
    protected void calcularPontoFuncaoBruto() {
        int total = 0;
        for(Funcao f : listaFuncoes) {
            total += f.obterComplexidade();
        }
        System.out.println("Ponto função bruto total" + total);
        setPontoFuncaoBruto(total);
    }

    public List<Funcao> getListaFuncoes() {
        return listaFuncoes;
    }

    public void setListaFuncoes(List<Funcao> listaFuncoes) {
        this.listaFuncoes = listaFuncoes;
    }
    
    @Override
    public Object clone() {
          
        try {
            Projeto copiaProjeto = (Projeto) BeanUtils.cloneBean(this);     
            
            List<Funcao> copiaListaFuncao = new LinkedList<Funcao>();
            
            for(Funcao funcao: this.getListaFuncoes()) {
                Funcao copiaFuncao = (Funcao)funcao.clone();
                copiaListaFuncao.add(copiaFuncao);
            }
            
            copiaProjeto.setListaFuncoes(copiaListaFuncao);
            
            return copiaProjeto;
        }catch(Exception e) {
            e.printStackTrace();;
        }
        return null;
    }
    
    
}
